﻿//==========================================================
//Đã sửa bởi tranninh_86_yb@yahoo.com ngày 19/08/2013
//==========================================================

using System;
using System.Data;
using System.Data.SqlClient;
using DevExpress.XtraReports.UI;
using prjKQXS_DLL;

namespace prjKQXS_UI.Reports
{
    public partial class frmRptBangTheoDoi : DevExpress.XtraEditors.XtraForm
    {
        int CapBac;
        string bangTheoDoi;
        SqlConnection conn = new SqlConnection(BienTc.connString);

        #region form EVENT =======================================================================
        public frmRptBangTheoDoi()
        {
            InitializeComponent();
        }

        public frmRptBangTheoDoi(string bangTheoDoi, int Cap)
        {
            InitializeComponent();
            this.CapBac = Cap;
            this.bangTheoDoi = bangTheoDoi;
        }

        private void frmRptBangTheoDoi_Load(object sender, EventArgs e)
        {
            this.Height = 383;

            if (bangTheoDoi == "Rut") 
                this.Text = "Bảng theo dõi danh sách đại lý cấp " + CapBac.ToString() + " đã rút tiền ký quỹ";
            else if (bangTheoDoi == "TienKyQuy")
            {
                this.Text = "Bảng theo dõi tiền ký quỹ đại lý cấp " + CapBac.ToString();
            }
            else if (bangTheoDoi == "Nop")
                this.Text = "Bảng theo dõi danh sách đại lý cấp " + CapBac.ToString() + " nộp tiền thế chấp";

             //rilueKyHan
            DataTable dt = new DataTable();
            dt.Columns.Add("LoaiKyHan", Type.GetType("System.SByte"));
            dt.Columns.Add("TenKyHan", Type.GetType("System.String"));
            dt.Rows.Add();
            dt.Rows.Add();
            dt.Rows.Add();
            dt.Rows[0]["LoaiKyHan"] = 3; dt.Rows[0]["TenKyHan"] = "3 tháng";
            dt.Rows[1]["LoaiKyHan"] = 6; dt.Rows[1]["TenKyHan"] = "6 tháng";
            dt.Rows[2]["LoaiKyHan"] = 12; dt.Rows[2]["TenKyHan"] = "12 tháng";
            rilueKyHan.DataSource = dt;

            if (bangTheoDoi == "TienKyQuy") load_gvKhoangThoiGian();
            load_cbeTuNgay(bangTheoDoi);
            lblTitle2.Text = this.Text.Substring(14, this.Text.Length - 14).ToUpper();

            if (bangTheoDoi == "Nop")
            {
                rgThanhly.Visible = true;
                groupBox1.Top = 77;
            }
            else if (bangTheoDoi == "TienKyQuy")
            {
                rgDoiTuong.Visible = true;
            }
        }
        #endregion form EVENT ====================================================================


        #region CONTROL EVENTS ===================================================================
        private void cbeTuNgay_SelectedIndexChanged(object sender, EventArgs e) //Load cbbDenNgay
        {
            cbbDenNgay.Items.Clear();
            if (bangTheoDoi == "Nop" || bangTheoDoi == "Rut")
                for (int i = cbeTuNgay.SelectedIndex; i < cbeTuNgay.Properties.Items.Count; i++)
                {
                    cbbDenNgay.Items.Add(cbeTuNgay.Properties.Items[i]);
                }
            else if (bangTheoDoi == "TienKyQuy")
            {
                string tungay = "", denngay = "";
                tungay = cbeTuNgay.Text.Trim();
                for (int i = 0; i < gvKhoangThoiGian.RowCount; i++)
                {
                    if (((DateTime)gvKhoangThoiGian.GetRowCellValue(i, "Tu_ngay")).ToString("dd/MM/yyyy").Trim() == tungay)
                    {
                        denngay = ((DateTime)gvKhoangThoiGian.GetRowCellValue(i, "Den_Ngay")).ToString("dd/MM/yyyy").Trim();

                        int j = i+1;
                        while (((DateTime)gvKhoangThoiGian.GetRowCellValue(j, "Tu_ngay")).ToString("dd/MM/yyyy").Trim() == tungay 
                            && j < gvKhoangThoiGian.RowCount)
                        {
                            if (Convert.ToInt32(gvKhoangThoiGian.GetRowCellValue(j, "LoaiKyHan")) < Convert.ToInt32(gvKhoangThoiGian.GetRowCellValue(i, "LoaiKyHan")))
                                denngay = ((DateTime)gvKhoangThoiGian.GetRowCellValue(j, "Den_Ngay")).ToString("dd/MM/yyyy").Trim();
                            j++;
                        }

                        break;
                    }
                }

                gcolTuNgay.SortOrder = DevExpress.Data.ColumnSortOrder.None; //Bỏ sắp xếp dữ liệu tăng dần theo cột Tu_ngay
                gcolDenNgay.SortOrder = DevExpress.Data.ColumnSortOrder.Ascending; //Sắp xếp dữ liệu tăng dần theo cột Den_Ngay

                bool allowLoad = false;
                for (int i = 0; i < gvKhoangThoiGian.RowCount; i++)
                {
                    if (!allowLoad)
                    {
                        if (((DateTime)gvKhoangThoiGian.GetRowCellValue(i, "Den_Ngay")).ToString("dd/MM/yyyy").Trim() == denngay)
                        {
                            cbbDenNgay.Items.Add(denngay);
                            allowLoad = true;
                        }
                    }
                    else //if (allowLoad)
                    {
                        denngay = ((DateTime)gvKhoangThoiGian.GetRowCellValue(i, "Den_Ngay")).ToString("dd/MM/yyyy").Trim();

                        //Đưa các items vào cbb như đoạn lệnh dưới để loại bỏ dòng trùng nhau
                        //if (cbbDenNgay.Items.Count == 0) cbbDenNgay.Items.Add(denngay);
                        //else if (cbbDenNgay.Items.Count > 0)
                        //    if (cbbDenNgay.Items[cbbDenNgay.Items.Count - 1].ToString().Trim() != denngay)
                        //        cbbDenNgay.Items.Add(denngay);
                        if (cbbDenNgay.Items[cbbDenNgay.Items.Count - 1].ToString().Trim() != denngay)
                            cbbDenNgay.Items.Add(denngay);
                    }
                }
            }

            sbtnBaoCao.Enabled = false;
        }

        private void cbbDenNgay_SelectedIndexChanged(object sender, EventArgs e)
        {
            if (cbbDenNgay.SelectedIndex == -1) sbtnBaoCao.Enabled = false;
            else sbtnBaoCao.Enabled = true;
        }

        private void sbtnBaoCao_Click(object sender, EventArgs e)
        {
            string s = cbeTuNgay.Text;
            int day = Convert.ToInt32(s.Substring(0, 2));
            int month = Convert.ToInt32(s.Substring(3, 2));
            int year = Convert.ToInt32(s.Substring(6, 4));
            DateTime tungay = new DateTime(year, month, day);

            s = cbbDenNgay.Text;
            day = Convert.ToInt32(s.Substring(0, 2));
            month = Convert.ToInt32(s.Substring(3, 2));
            year = Convert.ToInt32(s.Substring(6, 4));
            DateTime denngay = new DateTime(year, month, day);

            if (bangTheoDoi == "Nop")
            {
                prjKQXS_Report.rptMauTC05A rpt = new prjKQXS_Report.rptMauTC05A(CapBac, 0, tungay, rgDoiTuong.SelectedIndex,rgThanhly.SelectedIndex, denngay);
                rpt.ShowRibbonPreviewDialog();
            }
            else if (bangTheoDoi == "TienKyQuy")
            {
                int loaikyhan = Convert.ToInt32(gvKhoangThoiGian.GetFocusedRowCellValue(gcolLoaiKy));

                prjKQXS_Report.rptMauTC01A rpt = new prjKQXS_Report.rptMauTC01A(CapBac, tungay, denngay, rgDoiTuong.SelectedIndex);
                rpt.ShowRibbonPreviewDialog();
            }
            else if (bangTheoDoi == "Rut")
            {
                prjKQXS_Report.rptMauTC04A rpt = new prjKQXS_Report.rptMauTC04A(CapBac, tungay, denngay, rgDoiTuong.SelectedIndex);
                rpt.ShowRibbonPreviewDialog();
            }
        }
        #endregion CONTROL EVENTS ================================================================


        #region SUB AND FUNCTION =================================================================
        private void load_cbeTuNgay(string bangTheoDoi)
        {
            if (bangTheoDoi != "TienKyQuy")
            {
                if (conn.State == ConnectionState.Closed)
                {
                    conn.Open();
                }

                //Nop: NgayNopTC
                //TienKyQuy: T.DMCanBoID || T.HopDongID
                //Rut: LoaiKyHan, NgayRutTC
                SqlDataAdapter da = new SqlDataAdapter("proc_load_gvKhoangThoiGian", conn);
                da.SelectCommand.CommandType = CommandType.StoredProcedure;
                da.SelectCommand.Parameters.AddWithValue("@Cap", CapBac);
                da.SelectCommand.Parameters.AddWithValue("@bangTheoDoi", bangTheoDoi);
                DataTable dt = new DataTable();
                da.Fill(dt);

                if (dt.Rows.Count > 0)
                {
                    string sTuNgay = "";
                    for (int i = 0; i < dt.Rows.Count; i++)
                    {
                        if (bangTheoDoi == "Nop")
                            sTuNgay = ((DateTime)dt.Rows[i]["NgayNopTC"]).ToString("dd/MM/yyyy");
                        else if (bangTheoDoi == "Rut")
                            sTuNgay = ((DateTime)dt.Rows[i]["NgayRutTC"]).ToString("dd/MM/yyyy");

                        if (i == 0) cbeTuNgay.Properties.Items.Add(sTuNgay);
                        else if (i > 0)
                            if (cbeTuNgay.Properties.Items[cbeTuNgay.Properties.Items.Count - 1].ToString().Trim() != sTuNgay)
                                cbeTuNgay.Properties.Items.Add(sTuNgay);
                    }
                }
            }
            else //if (bangTheoDoi == "TienKyQuy")
            {
                if (gvKhoangThoiGian.RowCount > 0)
                {
                    string sTuNgay = "";
                    for (int i = 0; i < gvKhoangThoiGian.RowCount; i++)
                    {
                        sTuNgay = ((DateTime)gvKhoangThoiGian.GetRowCellValue(i, gcolTuNgay)).ToString("dd/MM/yyyy").Trim();

                        if (i == 0) cbeTuNgay.Properties.Items.Add(sTuNgay);
                        else if (i > 0)
                            if (cbeTuNgay.Properties.Items[cbeTuNgay.Properties.Items.Count - 1].ToString().Trim() != sTuNgay)
                                cbeTuNgay.Properties.Items.Add(sTuNgay);
                    }
                }
            }
        }

        private void load_gvKhoangThoiGian()
        {
            //Thủ tục này nạp nội dung cho gvKhoangThoiGian:
            //- Nếu bangThoiDoi = TienKyQuy: 
            //      + gv chứa thông tin LoaiKyHan, Tu_ngay, DenNgay của tất cả các kỳ gửi lưu trong ThietLapLaiXuat
            //      + gv sắp xếp tăng dần theo Tu_ngay

            //TienKyQuy: thủ tục sẽ lấy ra các DMCanBoID || HopDongID xuất hiện trong bảng TLLX1 || TLLX2
            SqlDataAdapter da = new SqlDataAdapter("proc_load_gvKhoangThoiGian", conn);
            da.SelectCommand.CommandType = CommandType.StoredProcedure;
            da.SelectCommand.Parameters.AddWithValue("@Cap", CapBac);
            da.SelectCommand.Parameters.AddWithValue("@bangTheoDoi", bangTheoDoi);
            DataTable dt = new DataTable();
            da.Fill(dt);

            if (bangTheoDoi == "TienKyQuy")
            {
                DataTable dt2 = new DataTable();

                if (dt.Rows.Count > 0)
                {
                    dt2 = clsCommon.loadData_TienKyQuy(CapBac, dt);
                }

                gcolDenNgay.FieldName = "Den_Ngay";
                gcolTuNgay.SortOrder = DevExpress.Data.ColumnSortOrder.Ascending; //Sắp xếp dữ liệu tăng dần theo cột Tu_ngay
                gcKhoangThoiGian.DataSource = dt2;
            }
            else
            {
                if (bangTheoDoi != "Nop")
                {
                    dt.Columns.Add("DenNgay", Type.GetType("System.DateTime")); //Thêm cột DenNgay
                    if (dt.Rows.Count > 0)
                    {
                        for (int i = 0; i < dt.Rows.Count; i++)
                        {
                            //Điền giá trị cho cột DenNgay
                            int lkh = Convert.ToInt32(dt.Rows[i]["LoaiKyHan"]);
                            DateTime tn = (DateTime)dt.Rows[i]["Tu_Ngay"];
                            dt.Rows[i]["DenNgay"] = clsCommon.generateDenNgay(lkh, tn);
                        }
                    }
                }

                gcKhoangThoiGian.DataSource = dt;
            }
        }
        #endregion SUB AND FUNCTION ==============================================================
    }
}